home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-11-01 | 16.8 KB | 790 lines | [TEXT/CWIE] |
- // ----- MAIN COMMAND DISPATCHER -----------------------------------------------
-
- cmd_xx:
-
- // ----- increment T cycle counter by 4 (( actually: decrement ))
- #if exact_timing
- subq.l #4,cc
- bmi.s cycle00
- #endif
-
-
- // ----- debugger related testings
- #if PC_PROFILE || pc_firstuse
- movea.l cnt_pc,a0
- addq.l #1,(a0,ip.w*4)
- #if pc_firstuse
- bne.s pcp1
- }; Do_1st_Loc ( ip ); asm {
- pcp1:
- #endif
- #endif
-
-
- // ------ get instruction
- move.b (ip)+,db
-
-
- // ----- debugger related testings
- #if CMD_PROFILE || cmd_firstuse
- movea.l cnt_xx,a0
- // addq.l #1,(a0,db.l*4)
- lsl #2,db
- addq.l #1,(a0,db.l)
- lsr #2,db
- #if cmd_firstuse
- bne.s cmdp1
- }; Do_1st_Instr ( ip ); asm {
- cmdp1:
- #endif
- #endif
-
-
- // ----- increment r register
- #if EXACT_R
- addq.b #1,r
- #endif
-
- // ----- perform instruction
- xx_im0: dc.w 0x41FB, 0x4A06 // lea *+$08(D4.l*2),A0
- adda.w (a0),a0
- jmp (a0)
-
- xx_tab: dc.w nxtcmnd, xx1, xx2, xx3, xx4, xx5, xx6, xx7
- dc.w xx8, xx9, xx10, xx11, xx12, xx13, xx14, xx15
- dc.w xx16, xx17, xx18, xx19, xx20, xx21, xx22, xx23
- dc.w xx24, xx25, xx26, xx27, xx28, xx29, xx30, xx31
- dc.w xx32, xx33, xx34, xx35, xx36, xx37, xx38, cmd_daa
- dc.w xx40, xx41, xx42, xx43, xx44, xx45, xx46, xx47
- dc.w xx48, xx49, xx50, xx51, xx52, xx53, xx54, xx55
- dc.w xx56, xx57, xx58, xx59, xx60, xx61, xx62, xx63
- dc.w nxtcmnd, xx65, xx66, xx67, xx68, xx69, xx70, xx71
- dc.w xx72, nxtcmnd, xx74, xx75, xx76, xx77, xx78, xx79
- dc.w xx80, xx81, nxtcmnd, xx83, xx84, xx85, xx86, xx87
- dc.w xx88, xx89, xx90, nxtcmnd, xx92, xx93, xx94, xx95
- dc.w xx96, xx97, xx98, xx99, nxtcmnd, xx101, xx102, xx103
- dc.w xx104, xx105, xx106, xx107, xx108, nxtcmnd, xx110, xx111
- dc.w xx112, xx113, xx114, xx115, xx116, xx117, xx118, xx119
- dc.w xx120, xx121, xx122, xx123, xx124, xx125, xx126, nxtcmnd
- dc.w xx128, xx129, xx130, xx131, xx132, xx133, xx134, xx135
- dc.w xx136, xx137, xx138, xx139, xx140, xx141, xx142, xx143
- dc.w xx144, xx145, xx146, xx147, xx148, xx149, xx150, xx151
- dc.w xx152, xx153, xx154, xx155, xx156, xx157, xx158, xx159
- dc.w xx160, xx161, xx162, xx163, xx164, xx165, xx166, xx167
- dc.w xx168, xx169, xx170, xx171, xx172, xx173, xx174, xx175
- dc.w xx176, xx177, xx178, xx179, xx180, xx181, xx182, xx183
- dc.w xx184, xx185, xx186, xx187, xx188, xx189, xx190, xx191
- dc.w xx192, xx193, xx194, xx195, xx196, xx197, xx198, xx199
- dc.w xx200, xx201, xx202, cmd_CB, xx204, xx205, xx206, xx207
- dc.w xx208, xx209, xx210, xx211, xx212, xx213, xx214, xx215
- dc.w xx216, xx217, xx218, xx219, xx220, cmd_IX, xx222, xx223
- dc.w xx224, xx225, xx226, xx227, xx228, xx229, xx230, xx231
- dc.w xx232, xx233, xx234, xx235, xx236, cmd_ED, xx238, xx239
- dc.w xx240, xx241, xx242, xx243, xx244, xx245, xx246, xx247
- dc.w xx248, xx249, xx250, xx251, xx252, cmd_IY, xx254, xx255
-
- /* ----- most frequent instructions (profiled 29.Mar.95)
-
- 10 : 003028B5 djnz N
- 00 : 002D93FE nop
- 20 : 0023A24B jr nz,N
- ED : 0014A967
- 23 : 000F425A inc hl
- CD : 000D99AC call NN
- 28 : 000CC95F jr z,N
- 77 : 000CB4E2 ld (hl),a
- C1 : 000BF390 pop bc
- C5 : 000BD970 push bc
- 78 : 000B690E ld a,b
- D9 : 000A9BC2 exx
- C9 : 000A46ED ret
- B1 : 0009E30F or a,c
- 0B : 00099EC6 dec bc
- E6 : 000A19AC and a,N
- D3 : 000989EF out (N),a
- FD : 0008554E
- DD : 0007EFE8
- EDA0 : 00079454 ldi
- 7E : 000717A4 ld a,(hl)
- A7 : 000700C6 and a,a
- 7C : 000650C1 ld a,h
- EDA8 : 00060640 ldd
- 1A : 0005841D ld a,(de)
- 24 : 00058340 inc h
- 15 : 000561E9 dec d
-
- ----------------------------------------------- */
-
-
-
-
- // ===== CALLING & JUMPING ===================================
-
- #define if_nc btst #0,f; bne nxtirpt
- #define if_c btst #0,f; beq nxtirpt
- #define if_po btst #1,f; bne nxtirpt
- #define if_pe btst #1,f; beq nxtirpt
- #define if_nz btst #2,f; bne nxtirpt
- #define if_z btst #2,f; beq nxtirpt
- #define if_p btst #3,f; bne nxtirpt
- #define if_m btst #3,f; beq nxtirpt
-
- #define get_pc move.w (ip)+,core
-
- #define push_pc move.w ip,d0 ;\
- rol.w #8,d0 ;\
- move.w d0,-(rp)
-
- #define jump rol.w #8,core ;\
- bra nxtjmp
-
- #define ret move.w (rp)+,core;\
- jump
-
- #define rst(ADR) more7 ;\
- push_pc ;\
- move.w ADR,core ;\
- bra nxtjmp
-
- xx199: do_info_rst0; more7; bra exit_rst0 // ----- RST 0
- xx207: do_info_rst8; rst(#8) // ----- rst 8
- xx215: do_info_rst16; rst(#16) // ----- rst 16
- xx223: do_info_rst24; rst(#24) // ----- rst 24
- xx231: do_info_rst32; rst(#32) // ----- rst 32
- xx239: do_info_rst40; rst(#40) // ----- rst 40
- xx247: do_info_rst48; rst(#48) // ----- rst 48
- xx255: do_info_rst56; rst(#56) // ----- rst 56
-
- xx192: more1; if_nz; more6; ret // ----- ret nz
- xx200: more1; if_z; more6; ret // ----- ret z
- xx208: more1; if_nc; more6; ret // ----- ret nc
- xx216: more1; if_c; more6; ret // ----- ret c
- xx224: more1; if_po; more6; ret // ----- ret po == ret V=0
- xx232: more1; if_pe; more6; ret // ----- ret pe == ret V=1
- xx240: more1; if_p; more6; ret // ----- ret p
- xx248: more1; if_m; more6; ret // ----- ret m
- xx201: more6; ret // ----- ret
-
- xx196: more6; get_pc; if_nz; more7; push_pc; jump // ----- call nz,nn
- xx204: more6; get_pc; if_z; more7; push_pc; jump // ----- call z,nn
- xx212: more6; get_pc; if_nc; more7; push_pc; jump // ----- call nc,nn
- xx220: more6; get_pc; if_c; more7; push_pc; jump // ----- call c,nn
- xx228: more6; get_pc; if_po; more7; push_pc; jump // ----- call po,nn
- xx236: more6; get_pc; if_pe; more7; push_pc; jump // ----- call pe,nn
- xx244: more6; get_pc; if_p; more7; push_pc; jump // ----- call p,nn
- xx252: more6; get_pc; if_m; more7; push_pc; jump // ----- call m,nn
- xx205: more6; get_pc; more7; push_pc; jump // ----- call nn
-
- xx194: more6; get_pc; if_nz; jump // ----- jp nz,nn
- xx202: more6; get_pc; if_z; jump // ----- jp z,nn
- xx210: more6; get_pc; if_nc; jump // ----- jp nc,nn
- xx218: more6; get_pc; if_c; jump // ----- jp c,nn
- xx226: more6; get_pc; if_po; jump // ----- jp po,nn
- xx234: more6; get_pc; if_pe; jump // ----- jp pe,nn
- xx242: more6; get_pc; if_p; jump // ----- jp p,nn
- xx250: more6; get_pc; if_m; jump // ----- jp m,nn
- xx195: more6; get_pc; jump // ----- jp nn
-
- xx233: movea.l AHL,ip // ----- jp (hl)
- bra nxtirpt
-
-
- // ===== LOAD R,R ==========================================
-
- #define load(Z,Q); move.b Q,Z; m_next
-
- xx65: load(RB,RC)
- xx66: load(RB,RD)
- xx67: load(RB,RE)
- xx68: load(RB,RH)
- xx69: load(RB,RL)
- xx70: more3; movea.l AHL,a0; load(RB,(a0))
- xx71: load(RB,a)
-
- xx72: load(RC,RB)
- xx74: load(RC,RD)
- xx75: load(RC,RE)
- xx76: load(RC,RH)
- xx77: load(RC,RL)
- xx78: more3; movea.l AHL,a0; load(RC,(a0))
- xx79: load(RC,a)
-
- xx80: load(RD,RB)
- xx81: load(RD,RC)
- xx83: load(RD,RE)
- xx84: load(RD,RH)
- xx85: load(RD,RL)
- xx86: more3; movea.l AHL,a0; load(RD,(a0))
- xx87: load(RD,a)
-
- xx88: load(RE,RB)
- xx89: load(RE,RC)
- xx90: load(RE,RD)
- xx92: load(RE,RH)
- xx93: load(RE,RL)
- xx94: more3; movea.l AHL,a0; load(RE,(a0))
- xx95: load(RE,a)
-
- xx96: load(RH,RB)
- xx97: load(RH,RC)
- xx98: load(RH,RD)
- xx99: load(RH,RE)
- xx101: load(RH,RL)
- xx102: more3; movea.l AHL,a0; load(RH,(a0))
- xx103: load(RH,a)
-
- xx104: load(RL,RB)
- xx105: load(RL,RC)
- xx106: load(RL,RD)
- xx107: load(RL,RE)
- xx108: load(RL,RH)
- xx110: more3; movea.l AHL,a0; load(RL,(a0))
- xx111: load(RL,a)
-
- xx120: load(a,RB)
- xx121: load(a,RC)
- xx122: load(a,RD)
- xx123: load(a,RE)
- xx124: load(a,RH)
- xx125: load(a,RL)
-
- xx126: more3; movea.l AHL,a0; load(a,(a0)) // ld a,(hl)
- xx10: more3; movea.l ABC,a0; load(a,(a0)) // ld a,(bc)
- xx26: more3; movea.l ADE,a0; load(a,(a0)) // ld a,(de)
-
- xx6: more3; load(RB,(ip)+) // ----- ld b,n
- xx14: more3; load(RC,(ip)+) // ----- ld c,n
- xx22: more3; load(RD,(ip)+) // ----- ld d,n
- xx30: more3; load(RE,(ip)+) // ----- ld e,n
- xx38: more3; load(RH,(ip)+) // ----- ld h,n
- xx46: more3; load(RL,(ip)+) // ----- ld l,n
- xx62: more3; load(a,(ip)+) // ----- ld a,n
-
-
- #if rom_protection
- sto_b: bra store_byte
- #define ldxhl(Q) more3 ;\
- move.l AHL,a0 ;\
- move.b Q,db ;\
- if_rom(sto_b) ;\
- load((a0),db)
- #else
- #define ldxhl(Q) more3 ;\
- movea.l AHL,a0 ;\
- load((a0),Q)
- #endif
-
- xx119: ldxhl(a)
- xx112: ldxhl(RB)
- xx113: ldxhl(RC)
- xx114: ldxhl(RD)
- xx115: ldxhl(RE)
- xx116: ldxhl(RH)
- xx117: ldxhl(RL)
-
- #if rom_protection
- sto_a: move.b a,db
- bra store_byte
- #endif
-
- xx2: more3 // ----- ld (bc),a
- move.l ABC,a0
- if_rom(sto_a)
- move.b a,(a0)
- m_next
-
- xx18: more3 // ----- ld (de),a
- move.l ADE,a0
- if_rom(sto_a)
- move.b a,(a0)
- m_next
-
- xx50: more8 // ----- ld (nn),a
- more1
- move.w (ip)+,core
- rol.w #8,core
- movea.l core,a0
- if_rom(sto_a)
- move.b a,(a0)
- m_next
-
- xx58: more8 // ----- ld a,(nn)
- more1
- move.w (ip)+,core
- rol.w #8,core
- movea.l core,a0
- load(a,(a0))
-
- #if rom_protection
- sto_n: move.b (ip)+,db
- bra store_byte
- #endif
-
- xx54: more6 // ----- ld (hl),n
- move.l AHL,a0
- if_rom(sto_n)
- move.b (ip)+,(a0)
- m_next
-
-
- // ===== INC R & DEC R =====================================
-
- #define id_flags move ccr,d0 ;\
- and.b #1,f ;\
- and.b #0xfe,d0 ;\
- or.b d0,f
-
- #define incr(R) addq.b #1,R; id_flags
- #define decr(R) subq.b #1,R; id_flags
-
- xx4: incr(RB); m_next // ----- inc b
- xx5: decr(RB); m_next // ----- dec b
- xx12: incr(RC); m_next // ----- inc c
- xx13: decr(RC); m_next // ----- dec c
- xx20: incr(RD); m_next // ----- inc d
- xx21: decr(RD); m_next // ----- dec d
- xx28: incr(RE); m_next // ----- inc e
- xx29: decr(RE); m_next // ----- dec e
- xx36: incr(RH); m_next // ----- inc h
- xx37: decr(RH); m_next // ----- dec h
- xx44: incr(RL); m_next // ----- inc l
- xx45: decr(RL); m_next // ----- dec l
- xx60: incr(a); m_next // ----- inc a
- xx61: decr(a); m_next // ----- dec a
-
- #if rom_protection
- inc_xhl: move.b (a0),db
- addq.b #1,db
- bra.s id_xhl
- dec_xhl: move.b (a0),db
- subq.b #1,db
- id_xhl: id_flags
- bra store_byte
- #endif
-
- xx52: more7 // ----- inc (hl)
- move.l AHL,a0
- incx: if_rom(inc_xhl)
- incr((a0))
- m_next
-
- xx53: more7 // ----- dec (hl)
- move.l AHL,a0
- decx: if_rom(dec_xhl)
- decr((a0))
- m_next
-
-
-
- // ===== ARITHMETICS / BOOLEAN ==============================
-
- // ----------------------------------------------- add a,r
- #define adda(R) add.b R,a ;\
- move ccr,f ;\
- m_next
-
- xx128: adda(RB)
- xx129: adda(RC)
- xx130: adda(RD)
- xx131: adda(RE)
- xx132: adda(RH)
- xx133: adda(RL)
- xx134: more3; movea.l AHL,a0; adda((a0))
- xx135: adda(a)
-
- // ----------------------------------------------- adc a,r
- #define adca(R) move.b R,d0 ;\
- lsr.b #1,f ;\
- cmp d0,d0 ;\
- addx.b d0,a ;\
- move ccr,f ;\
- m_next
-
- xx136: adca(RB)
- xx137: adca(RC)
- xx138: adca(RD)
- xx139: adca(RE)
- xx140: adca(RH)
- xx141: adca(RL)
- xx142: more3; movea.l AHL,a0; adca((a0))
- xx143: adca(a)
-
- // ----------------------------------------------- sub a,r
- #define suba(R) sub.b R,a ;\
- move ccr,f ;\
- m_next
-
- xx144: suba(RB)
- xx145: suba(RC)
- xx146: suba(RD)
- xx147: suba(RE)
- xx148: suba(RH)
- xx149: suba(RL)
- xx150: more3; movea.l AHL,a0; suba((a0))
- xx151: suba(a)
-
- // ----------------------------------------------- sbc a,r
- #define sbca(R) move.b R,d0 ;\
- lsr.b #1,f ;\
- cmp d0,d0 ;\
- subx.b d0,a ;\
- move ccr,f ;\
- m_next
-
- xx152: sbca(RB)
- xx153: sbca(RC)
- xx154: sbca(RD)
- xx155: sbca(RE)
- xx156: sbca(RH)
- xx157: sbca(RL)
- xx158: more3; movea.l AHL,a0; sbca((a0))
- xx159: sbca(a)
-
- // ------------------------------------------------- and a,r
- #define anda(R) and.b R,a ;\
- move.b (logflags,a.w),f ;\
- m_next
-
- xx160: anda(RB)
- xx161: anda(RC)
- xx162: anda(RD)
- xx163: anda(RE)
- xx164: anda(RH)
- xx165: anda(RL)
- xx166: more3; movea.l AHL,a0; anda((a0))
- xx167: move.b (logflags,a.w),f
- m_next
-
- // ------------------------------------------------- xor a,r
- #define xora(R) move.b R,d0 ;\
- eor.b d0,a ;\
- move.b (logflags,a.w),f ;\
- m_next
-
- xx168: xora(RB)
- xx169: xora(RC)
- xx170: xora(RD)
- xx171: xora(RE)
- xx172: xora(RH)
- xx173: xora(RL)
- xx174: more3; movea.l AHL,a0; xora((a0))
- xx175: eor.b a,a
- move.b #0x06,f // SZPC = 0110
- m_next
-
- // ------------------------------------------------- or a,r
- #define ora(R) or.b R,a ;\
- move.b (logflags,a.w),f ;\
- m_next ;\
-
- xx176: ora(RB)
- xx177: ora(RC)
- xx178: ora(RD)
- xx179: ora(RE)
- xx180: ora(RH)
- xx181: ora(RL)
- xx182: more3; movea.l AHL,a0; ora((a0))
- xx183: move.b (logflags,a.w),f
- m_next
-
- // --------------------------------------------------- cp a,b
- #define cpa(R) cmp.b R,a ;\
- move ccr,f ;\
- m_next
-
- xx184: cpa(RB)
- xx185: cpa(RC)
- xx186: cpa(RD)
- xx187: cpa(RE)
- xx188: cpa(RH)
- xx189: cpa(RL)
- xx190: more3; movea.l AHL,a0; cpa((a0))
- xx191: move.b #0x04,f
- m_next
-
- // --------------------------------------- immediate arguments
- xx198: more3; adda((ip)+) // ----- add a,n
- xx206: more3; adca((ip)+) // ----- adc a,n
- xx214: more3; suba((ip)+) // ----- sub a,n
- xx222: more3; sbca((ip)+) // ----- sbc a,n
- xx230: more3; anda((ip)+) // ----- and a,n
- xx238: more3; xora((ip)+) // ----- xor a,n
- xx246: more3; ora((ip)+) // ----- or a,n
- xx254: more3; cpa((ip)+) // ----- cp a,n
-
-
- // ===== SHIFT/ROTATE A ====================================
-
- xx7: bclr #0,f // ----- rlca
- rol.b #1,a
- bcc nxtcmnd
- bset #0,f
- m_next
-
- xx15: bclr #0,f // ----- rrca
- ror.b #1,a
- bcc nxtcmnd
- bset #0,f
- m_next
-
- xx23: roxr.b #1,f // ----- rla
- roxl.b #1,a
- roxl.b #1,f
- m_next
-
- xx31: roxr.b #1,f // ----- rra
- roxr.b #1,a
- roxl.b #1,f
- m_next
-
-
- // ===== WORD INSTRUCTIONS ==========================
-
- xx3: more2; addq.w #1,BC; m_next // ----- inc bc
- xx11: more2; subq.w #1,BC; m_next // ----- dec bc
- xx19: more2; addq.w #1,DE; m_next // ----- inc de
- xx27: more2; subq.w #1,DE; m_next // ----- dec de
- xx35: more2; addq.w #1,HL; m_next // ----- inc hl
- xx43: more2; subq.w #1,HL; m_next // ----- dec hl
- xx51: more2; addq.w #1,rp; m_next // ----- inc sp 1.11.95
- xx59: more2; subq.w #1,rp; m_next // ----- dec sp 1.11.95
-
- xx1: more6 // ----- ld bc,NN
- move.b (ip)+,RC
- move.b (ip)+,RB
- m_next
-
- xx17: more6 // ----- ld de,nn
- move.b (ip)+,RE
- move.b (ip)+,RD
- m_next
-
- xx33: more6 // ----- ld hl,nn
- move.b (ip)+,RL
- move.b (ip)+,RH
- m_next
-
- xx49: more6 // ----- ld sp,nn
- move.w (ip)+,core
- rol.w #8,core
- movea.l core,rp
- bne nxtcmnd
- adda.l #0x00010000,rp // falls sp := ramend korr. 6.3.95 kio
- m_next
-
- xx42: more8 // ----- ld hl,(nn)
- more4
- move.w (ip)+,core
- rol.w #8,core
- movea.l core,a0
- move.b (a0)+,RL
- move.b (a0),RH
- m_next
-
-
-
- xx9: more7 // ----- add hl,bc
- lsr.b #1,f
- move.w BC,d0
- add.w d0,HL
- roxl.b #1,f
- m_next
-
- xx25: more7 // ----- add hl,de
- lsr.b #1,f
- move.w DE,d0
- add.w d0,HL
- roxl.b #1,f
- m_next
-
- xx41: more7 // ----- add hl,hl
- ror.b #1,f
- lsl.w HL
- roxl.b #1,f
- m_next
-
- xx57: more7 // ----- add hl,sp
- lsr.b #1,f
- move.w rp,d0
- add.w d0,HL
- roxl.b #1,f
- m_next
-
- #if rom_protection
- sto_hl: move.w HL,d0
- bra store_word
- #endif
-
- ed_63: more4 // ----- ld (nn),hl (( ED instr. ))
- xx34: more8 // ----- ld (nn),hl
- more4
- move.w (ip)+,core
- rol.w #8,core
- movea.l core,a0
- if_rom(sto_hl)
- move.b RL,(a0)+
- move.b RH,(a0)
- m_next
-
-
- // ===== PUSH, POP and EX ================================
-
- xx193: more6
- move.b (rp)+,RC // ----- pop bc
- move.b (rp)+,RB
- m_next
-
- xx197: more7
- move.b RB,-(rp) // ----- push bc
- move.b RC,-(rp)
- m_next
-
- xx209: more6
- move.b (rp)+,RE // ----- pop de
- move.b (rp)+,RD
- m_next
-
- xx213: more7
- move.b RD,-(rp) // ----- push de
- move.b RE,-(rp)
- m_next
-
- xx225: more6
- move.b (rp)+,RL // ----- pop hl
- move.b (rp)+,RH
- m_next
-
- xx229: more7
- move.b RH,-(rp) // ----- push hl
- move.b RL,-(rp)
- m_next
-
- xx241: more6
- move.b (rp)+,db // ----- pop af
- lea m68flags,a0 // A=hi; F=lo !!
- move.b (a0,db.l),f
- move.b (rp)+,a
- m_next
-
- xx245: more7
- move.b a,-(rp) // ----- push af
- move.b f,db // A=hi; F=lo !!
- lea z80flags,a0
- move.b (a0,db.l),-(rp)
- m_next
-
-
- xx8: swap a // ----- ex af,af'
- swap f
- m_next
-
- xx217: move.w BC,d0 // ----- exx
- move.w BC2,BC
- move.w d0,BC2
- move.w DE,d0
- move.w DE2,DE
- move.w d0,DE2
- move.w HL,d0
- move.w HL2,HL
- move.w d0,HL2
- m_next
-
- xx227: more8
- more7
- move.w (rp)+,d0 // ----- ex (sp),hl
- rol.w #8,d0
- move.b RH,-(rp)
- move.b RL,-(rp)
- move.w d0,HL
- m_next
-
- xx235: move.w DE,d0 // ----- ex de,hl
- move.w HL,DE
- move.w d0,HL
- m_next
-
- xx249: more2
- move.w HL,core // ----- ld sp,hl
- movea.l core,rp
- bne nxtirpt
- adda.l #0x00010000,rp // if sp==0 => sp:= ramend
- m_next
-
-
- // ===== LOST & FOUND =======================================
-
- xx47: not.b a; m_next // ----- cpl
- xx55: bset #0,f; m_next // ----- scf
- xx63: bchg #0,f; m_next // ----- ccf
-
- xx118: do_info_halt // ----- halt
- bra exit_halt
-
-
- xx243: do_info_di // ----- di
- clr.w IFF1 // disable iff1 and iff2
- m_next
-
- xx251: do_info_ei // ----- ei
- move.w #0xFFFF,IFF1 // enable iff1 & iff2
- bra check_wuff // !!! next instr should be performed first!
-
- xx211: // ----- out(N),a
- more7
- sto_cc
- move.b a,-(a7) // Do_Output ( (a<<8) + *ip++, a )
- move.b a,d0 //
- asl.w #8,d0 //
- move.b (ip)+,d0 //
- move.w d0,-(a7) //
- jsr Do_Output //
- addq.l #4,a7 //
- load_rom_end
- m_next
-
- xx219: // ----- in a,(N) setzt keine Flags !
- more7
- sto_cc
- move.b a,d0 // a = Do_Input ( (a<<8) + *ip++ )
- asl.w #8,d0 //
- move.b (ip)+,d0 //
- move.w d0,-(a7) //
- jsr Do_Input //
- addq.l #2,a7 //
- move.b d0,a //
- load_rom_end
- m_next
-
-
- // ----- END OF MAIN COMMAND DISPATCHER -------------------------------------------
-
-
- #undef load
- #undef ldxhl
- #undef adda
- #undef adca
- #undef suba
- #undef sbca
- #undef anda
- #undef ora
- #undef xora
- #undef cpa
- #undef if_nz
- #undef if_z
- #undef if_nc
- #undef if_c
- #undef if_po
- #undef if_pe
- #undef if_p
- #undef if_m
- #undef get_pc
- #undef push_pc
- #undef jump
- #undef ret
- #undef rst
-
-
-
-
-
-